package cn.design.realize.staticdemo;

import cn.design.realize.Subject;

/**
 * @author dlq
 * @description 创建代理对象(proxy), 也就是"代购",实现抽象接口,并通过对象实例并且访问其方法
 * @date 2020/9/23 9:56
 * @since 1.0
 */
public class Proxy implements Subject {
    /**
     * 抽象接口； 声明我(真实对象)需要代购(代理对象)帮忙做(替真实对象对象做)的事情
     * 就是我们的目标对象
     */
    public Subject subject;

    public Proxy(Subject subject) {
        this.subject = subject;
    }

    @Override
    public String bugLipstick(String name) {
        //这里通过一些列代码逻辑,...... 得到一个结果
        System.out.println("代购获得了" + name + "口红");
        return subject.bugLipstick(name);
    }
    /*
     *   这里要区分一下
     *   适配器模式： 适配器是不 B 接口 转换为 A接口,适配器做的事(适配器的代码中是:我需要一个电压，适配器将中国电压转化成美国/德国电压),做的事都产生了变化
     *   而代理模式： 它还是是 A 接口,给调用A接口的时候包了一层,它做的事(这里是买口红),还是不变的(还是买口红),只是不是"我"去做,而是代理对象对做
     */
}
